// package org.example;
//
// import io.netty.buffer.ByteBuf;
// import io.netty.channel.ChannelHandlerContext;
// import io.netty.handler.codec.ByteToMessageDecoder;
// import org.example.protobuf.MsgProto;
//
// import java.util.List;
//
// /**
//  * @author hh
//  * @since 2024/11/24
//  */
// public class ProtobufDecoder extends ByteToMessageDecoder {
//     @Override
//     protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf in, List<Object> out) throws Exception {
//         // 标记一下当前的读指针readIndex的位置
//         in.markReaderIndex();
//         // 判断包头的长度
//         if (in.readableBytes() < 2) {
//             return;
//         }
//         // 读取传送过来的消息长度
//         int length = in.readShort();
//         if (length < 0) {
//             // 非法数据，关闭连接
//             channelHandlerContext.close();
//         }
//         // 可读字节少于预期消息长度
//         if (length > in.readableBytes()) {
//             // 重置读取位置
//             in.resetReaderIndex();
//             return;
//         }
//         byte[] array;
//         if (in.hasArray()) {
//             ByteBuf slice = in.slice();
//             array = slice.array();
//         } else {
//             array = new byte[length];
//             in.readBytes(array, 0, length);
//         }
//         // 字节转成Protobuf的POJO对象
//         MsgProto.Msg outMsg = MsgProto.Msg.parseFrom(array);
//         if (outMsg != null) {
//             // 将Protobuf的POJO实例加入出站List容器
//             out.add(outMsg);
//         }
//
//
//
//
//     }
// }
